package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * JDBC JAVA DataBase Connectivity
 * JDBC是java
 * 不同的数据库提供商都会实现一套对应的实现类，我们称这套实现类为驱动
 * 再操作不同的数据库时，需要先下载对应的驱动类，使用JDBC接口定义的操作来操作驱动的实现类
 */
public class JDBCDemo1 {
    /**
     * 使用
     * 1.加载驱动
     */

    public static void main(String[] args) throws ClassNotFoundException, SQLException {//永远不要再main方法上抛异常
        //1.加载驱动
        Class.forName("com.mysql.cj.jdbc.Driver");//这个时Mysql的
        //2.与数据库链接
        Connection connection = DriverManager.getConnection(
                //格式：jdbc:mysql://主机地址信息/数据库名？一堆参数
                "jdbc:mysql://localhost:3306/tedu?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true",//数据库的地址（格式大致相同，不同的也不太相同）
                "root",//登录数据库的用户名
                "root"//数据库的密码
        );
        System.out.println("与数据库建立链接");
        //3.创建语句执行对象
        Statement statement = connection.createStatement();
        //4.执行创建表操作

        String sql = "CREATE TABLE userinfo(\n" +
                "   id INT PRIMARY KEY AUTO_INCREMENT,\n" +
                "    username VARCHAR(32),\n" +
                "    password VARCHAR(32),\n" +
                "    nickname VARCHAR(32),\n" +
                "    age INT(3)\n" +
                ")";
        /*
         boolean execute(String sql)
         用于指定给定的SQL语句，返回值表示执行完毕后是否产生了查询结果集
         如果SQL书写有误，或则执行导致数据库出错，这里都会抛出异常

         虽然该方法什么类型SQL都可以使用 但DML DQL语句有专门的方法 因此该方法通常执行DDL语句
         */
        statement.execute(sql);
        System.out.println("表创建成功！");

        connection.close();
    }


}
